With advances in digital data transmission techniques and digital video compression such as used in the MPEG standards (e.g., MPEG-2, MPEG-4), it is possible to deliver several digitally compressed video programs in the same bandwidth that is otherwise occupied by a single analog television (TV) channel. These capabilities provide opportunities for programming service providers (e.g., broadcasters such as CNN, ABC), network operators e.g., cable and satellite network owners), and client devices.
In a multi-program transmission environment, several programs (e.g., channels) are coded, multiplexed and transmitted over a single communication channel. Since these programs share a limited channel capacity, the aggregate bit rate of the programs must be no greater than the communication channel rate. In order to optimize the quality and efficiency of the program transmission process, the bit rate of the program or video streams can be varied as needed to manage the utilization of network bandwidth.
One video transmission technique that may be used to manage bandwidth is statistical multiplexing, which combines several programs each including a compressed video bit stream into a single multiplexed bit stream, e.g., for transmission of a plurality of programs on a single frequency. In this manner a service provider may provide more programs to a subscriber base using the same network infrastructure, e.g. providing four programs in the same network infrastructure that would have previously provided a single program. For a given level of video quality, the bit rate of a given compressed stream generally varies with time based on the complexity of the corresponding video signals. A statistical multiplexer attempts to estimate the complexity of the various video frame sequences of a video signal and allocates channel bits among the corresponding compressed video bit streams. In some cases the bits are allocated so as to provide a desired (e.g., approximately constant) level of video quality across all of the multiplexed streams. For example, a given video frame sequence with a relatively large amount of spatial activity or motion may be more complex than other sequences and therefore allocated more bits than the other sequences. On the subscriber side, a network element, such as set top box, pulls the desired program out of the multiplex stream by use of a tuner to tune to the multiplex frequency and a decoder to decode the desired program such as by using its associated program ID (PID).
Another technique that may be used to manage bandwidth involves adaptively streaming data as streaming media. Streaming media differs from ordinary media in the sense that streaming media may be played out as soon as it is received rather than waiting for the entire file to be transferred over the network. One advantage associated with streaming media is that it allows the user to begin viewing the content immediately or on a real-time basis with rather short delay. In contrast, simply downloading a media file to a customer, which is a very effective technique to manage bandwidth because it allows for very wide swings in bit rate, does not allow the user to begin viewing the content on a real-time basis. The downloaded media must also be stored prior to playback, requiring significant and often expensive storage capabilities on the subscriber device. This delay and associated additional expense may be unacceptable to customers, thereby making streaming media more attractive.
In adaptive streaming, the encoded bit rate of a media data stream is dynamically adjusted depending on specific network conditions. To achieve this, the streaming client continuously estimates the current state of the network and adjusts the requested bit rate from the server upward or downward depending on the available bandwidth associated with that particular streaming communication frequency data link.
One problem with media streaming architectures is the tight coupling that is required between the streaming server and client. The communication between the client and server that streaming media requires creates additional server overhead, because the server tracks the current state of each client. Significantly, this limits the scalability of the server as the number of media data streams being streamed increases. In addition, the client cannot quickly react to changing conditions, such as increased packet loss, reduced bandwidth, user requests for different content or to modify the existing content (e.g., speed up or rewind), and so forth, without first communicating with the server and waiting for the server to adapt and respond. Often, when a client reports a lower available bandwidth, the server does not adapt quickly enough causing breaks in the media to be noticed by the user on the client as packets that exceed the available bandwidth are not received and new lower bit rate packets are not sent from the server in time. To avoid these problems, clients often buffer data, but buffering introduces latency, which for live events may be unacceptable.
Accordingly, neither statistical multiplexing nor adaptive streaming is fully satisfactory methods of managing bandwidth in a network.